import axios from 'axios';
import route from '@/router/index'
import qs from 'qs'
import {
    getLocalStorage,
    setLocalStorage
} from '@/utils/common';

import GLOBAL from '@/utils/global';


let instance = axios.create({
    baseURL: import.meta.env.VITE_BASE_API_URL,
    timeout: 35000, // 请求超时时间
    headers: {
        // 'content-type': 'application/x-www-form-urlencoded',
    },
})

//不需要统一添加unionId配置的请求集合
const unConfigUrls = [
    '/data/uploadFile'
]

// 拦截请求
instance.interceptors.request.use(
    config => {
        //提供第三方的外部链接时不做登录信息失效判断
        if (GLOBAL.LINKTYPE !== 'weburl') {
            //判断登录信息是否失效
            if ((!getLocalStorage('userInfo') || !getLocalStorage('pro_sel')) && config.url !== '/common/login') {
                route.push('/login')
                return
            }
        }

        //判断当前是否为提供第三方的外部链接 
        //是的话则使用地址栏中的unionId
        let unionId = GLOBAL.LINKTYPE === 'weburl' ? GLOBAL.LINKUNIONID : getLocalStorage('pro_sel');
        //const unionId = '648c0e6a98d7f5ecb96dfd6f'

        if (!unConfigUrls.includes(config.url)) {
            if (config.method === 'post') {
                config.data = qs.stringify({
                    unionId,
                    ...config.data
                })
            } else if (config.method === 'get') {
                config.params = {
                    unionId,
                    ...config.params
                }
            }
        }
        return config
    }, error => {
        return Promise.reject(error)
    })

// 拦截响应
instance.interceptors.response.use(res => {
    // 可以在此处拦截接口错误
    return res.data
}, error => {
    return Promise.reject(error)
})

export default instance;